iT邦幫忙

2025 iThome 鐵人賽

DAY 4
1
Cloud Native

《30 天 Cloud Native:AI 行程規劃後端開發》系列 第 4

Day4 - 別再掃了...他只是個 hello

  • 分享至 

  • xImage
  •  

好煩, Load Balancer 開起來之後一堆人在那邊掃目錄想打進來,到 Cloud Run 選想看的 Service 後可以點進 Logs 頁面:

https://ithelp.ithome.com.tw/upload/images/20250817/20178194JHgZUv3FTP.png

可以看到用工具掃目錄的痕跡,這些東西讓我一覺醒來噴了 $19 台幣,我做的服務還真是熱門呢 :p 。不想因為這樣浪費額度,問了 Gemini 的解法是刪掉 Load Balancer 或下面的服務,沒有暫停的選項可用,看來以後要設計一個檢查額度是否用完然後直接把 Load Balancer 砍掉的方法,為了讓想法能付諸行動,今天趕快來熟悉 Cloud Run 吧。

hello 你好嗎

好奇心使然,在 Cloud Run 建立服務時先使用範例的 hello 容器來測試服務是否正常,那這個服務內到底跑了什麼呢?

https://ithelp.ithome.com.tw/upload/images/20250817/201781944Jfvujo9k1.png

直接瀏覽 us-docker.pkg.dev/cloudrun/container/hello 會進入 Google Cloud 存放容器的地方,還可以看到開源的 Gemma :

https://ithelp.ithome.com.tw/upload/images/20250817/20178194WaDw71rH26.png

先不要被 LLM 迷惑,來看看 hello 這個容器,有連結後可以直接用 docker 拉下來並且執行:

$ docker pull us-docker.pkg.dev/cloudrun/container/hello
$ docker run -it us-docker.pkg.dev/cloudrun/container/hello:latest
2025/08/17 04:05:20 Hello from Cloud Run! The container started successfully and is listening for HTTP requests on port 8080

想知道容器裡面的環境最快的方法就是直接 docker execbash 並不存在於容器內:

$ docker exec -it 9ac81 bash
OCI runtime exec failed: exec failed: unable to start container process: exec: "bash": executable file not found in $PATH: unknown

翻了一下 GitHub 可以找到這個 Hello 容器的原始碼。看 Dockerfile 可以發現它是基於 Scratch image,也就是裡面什麼都沒有。雖然看看原始碼就能知道這個 Hello 的行為,但好奇的你應該想知道在 Scratch image 下要怎麼拿到 Shell 吧?

當要在一個沒有動態函式庫的環境裡操作 Shell,最直觀的解法就是放一個靜態連結的 Shell 上去執行。但是要瀏覽目錄還需要 ls 或是 ps 之類的指令看看裡面有什麼。這個情況下可以拿一個靜態連結的 BusyBox 放上去。Debian package 就有可以直接下載 (Debian -- Package Download Selection -- busybox-static_1.37.0-6+b3_amd64.deb)。下載下來的 deb 檔案使用 dpkg-deb 解開就能拿到靜態連結的 BusyBox,然後放進容器內就可以執行:

https://ithelp.ithome.com.tw/upload/images/20250817/201781946PB9AZ8F2D.png

花了點時間了解這個測試範例後,可以知道跑在 Cloud Run 內的服務要是個輕量且準備好發布的環境,不能只是個 Debug Server ,接下來將試著建立一個屬於自己的 Cloud Run Service!


上一篇
Day3 - 讓 Google 幫你管理憑證
下一篇
Day5 - 建立自己的 Cloud Run Service
系列文
《30 天 Cloud Native:AI 行程規劃後端開發》18
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言